18. 练习 — 循环变量

练习 — 循环变量

在以下循环中, length 是什么?

for length in [10, 20, 30, 40, 50, 60]:
    dizzy.forward(length)
    dizzy.right(90)
SOLUTION: 变量。

下面是相同的循环:

for length in [10, 20, 30, 40, 50, 60]:
    dizzy.forward(length)
    dizzy.right(90)

关于该循环,以下哪些表述正确?

SOLUTION:
  • 循环将运行六次。
  • 循环第三次运行时,值 `30` 将被赋值给 `length` 变量。
  • 循环第四次运行时,`dizzy` 将向前移动 40 个像素。

QUIZ QUESTION: :

还是相同的循环:

for length in [10, 20, 30, 40, 50, 60]:
    dizzy.forward(length)
    dizzy.right(90)

下面的哪些循环将绘制出和这个循环相同的图形?

ANSWER CHOICES:



循环

相同或不同?

相同

不同

不同

相同

SOLUTION:

循环

相同或不同?

相同

相同

不同

不同

不同

不同

相同

相同

循环的第一行

关键概念是 for 循环在 第一行 内置了一个特殊变量。在这些示例中,该变量叫做 length

for length in [10, 20, 30, 40, 50, 60]:

循环的第一行每次运行时,列表中的某项将被赋值给该变量。

在第一行用该值赋值后,循环中的代码会运行。

需要理解的重要一点是这个赋值发生在 for 循环的 第一行 ,但是在此第一行之后,我们可以将不同的值赋值该变量(使用普通赋值语句)。

例如,看看下个问题:

下面是我们一直查看的相同循环,但是稍加修改了。

for length in [10, 20, 30, 40, 50, 60]:
    length = 100
    dizzy.forward(length)
    dizzy.right(90)

对于此代码,哪些表述正确(这道题可能有点难!)

其中 两个 表述正确:

SOLUTION:
  • 循环每次运行时,`dizzy` 将向前移动 `100` 个像素。
  • 循环第一次运行时,`length` 被赋值 `10`,但是立即重新被赋值 `100`。

下面这个比较奇怪:

for length in [10, 20, 30, 40, 50, 60]:
    dizzy.forward(length)
    length = 100
    dizzy.forward(length)

循环第一次运行时, dizzy 会移动多远?

SOLUTION: `110` 个像素